package sh.orm.convert;

import java.sql.ResultSet;

/**
 * 类型转换器接口<br>
 *  针对要返回对象的字段类型，从转换器中找出合适的转换器进行转换，如果数据类型一致，不需要转换。
 * 从数据库类型转换为java类型，
 * 不考虑java类型转换为数据库类型，因为生成sql暂时不需要。
 * @author lqq
 * @date 2019/2/21
 */
public interface TypeConvertor<T> {

    /**
     * 转换为目标类型的对象
     * @param original 原始的对象
     * @param targetType 目标数据类型
     * @return
     */
    @Deprecated
    public T convert(Object original , Class<T> targetType);

    /**
     * 把java对象类型转换数据库类型，因为数据库使用的是拼接sql的形式，所以最终返回的还是String,也就是说只需要修改对象的toString方法就可以。
     * @param javaObj 要转换的类型
     * @return
     */
    public String convertToJdbcValue(T javaObj );

    /**
     * 转换为java类型
     * @param columnName
     * @param rs
     * @return
     */
    public T convertToJavaType(String columnName, ResultSet rs);


}
